/**
 * 
 */
package com.proyecto.histoclin.modelo.validacion;

import com.proyecto.core.Utilidades.ObtenerFecha;
import com.proyecto.core.modelo.echo.constantes.ParametrosIniciales;
import com.proyecto.core.modelo.excepciones.GeneralException;
import com.proyecto.core.modelo.servicio.interfaces.IServicioTransaccion;
import com.proyecto.core.modelo.validacion.IValidacionServicio;
import com.proyecto.histoclin.modelo.dto.HistoclinAntesfamiperso;
import com.proyecto.histoclin.modelo.dto.HistoclinAntesfamipersoId;
import com.proyecto.histoclin.modelo.dto.HistoclinMtdsanticonceptivosId;
import com.proyecto.histoclin.modelo.servicios.ServicioHistoclinAntesfamiperso;

/**
 * @author vico
 *
 */
public class ValidacionServicioHistoclinAntesfamiperso implements
		IValidacionServicio {

	/**
	 * 
	 */
	IServicioTransaccion servicioTablaApoyoHistoclinMtdsanticonceptivos;
	public ValidacionServicioHistoclinAntesfamiperso() {
		// TODO Auto-generated constructor stub
	}

	/* (non-Javadoc)
	 * @see com.proyecto.core.modelo.validacion.IValidacionServicio#buscarCatalogoPorPropiedad(java.lang.String, java.lang.String)
	 */
	public void buscarCatalogoPorPropiedad(String atributo, String valor)
			throws GeneralException {
		// TODO Auto-generated method stub
		if (atributo == null || valor == null || atributo.equals("")
				|| valor.equals("")) {
			throw new GeneralException(
				"error.HistoriasClinicas.datosBasicos.HistoclinAntesfamiperso.buscarCatalogoXPropiedad.parametrosInvalidos");
		}
	}

	/* (non-Javadoc)
	 * @see com.proyecto.core.modelo.validacion.IValidacionServicio#consultar(java.lang.Object)
	 */
	public void consultar(Object o) throws GeneralException {
		// TODO Auto-generated method stub
		HistoclinAntesfamipersoId objHistoclinAntesfamipersoId = (HistoclinAntesfamipersoId) o;
		if (objHistoclinAntesfamipersoId == null || objHistoclinAntesfamipersoId.getCiaopr() == null
				|| objHistoclinAntesfamipersoId.getCiaopr().trim().equals("")
				|| objHistoclinAntesfamipersoId.getHisclicod() == null
				|| objHistoclinAntesfamipersoId.getHisclicod().equals("")
				|| objHistoclinAntesfamipersoId.getAntesfamipersocod() == null
				|| objHistoclinAntesfamipersoId.getAntesfamipersocod().equals("")
				) {
			throw new GeneralException(
					"error.HistoriasClinicas.datosBasicos.HistoclinAntesfamiperso.consulta.pkNull");
		}
	}

	/* (non-Javadoc)
	 * @see com.proyecto.core.modelo.validacion.IValidacionServicio#consultarTodos(java.lang.Object)
	 */
	public void consultarTodos(Object o) throws GeneralException {
		// TODO Auto-generated method stub
		if (o == null) {
			throw new GeneralException(
					"error.HistoriasClinicas.datosBasicos.HistoclinAntesfamiperso.consulta.pkNull");
		}
	}

	/* (non-Javadoc)
	 * @see com.proyecto.core.modelo.validacion.IValidacionServicio#eliminar(java.lang.Object)
	 */
	public void eliminar(Object o) throws GeneralException {
		// TODO Auto-generated method stub
		HistoclinAntesfamiperso objHistoclinAntesfamiperso = (HistoclinAntesfamiperso) o;
		if (objHistoclinAntesfamiperso == null || objHistoclinAntesfamiperso.getId().getCiaopr() == null
				|| objHistoclinAntesfamiperso.getId().getCiaopr().trim().equals("")
				|| objHistoclinAntesfamiperso.getId().getHisclicod() == null
				|| objHistoclinAntesfamiperso.getId().getHisclicod().equals("")
				|| objHistoclinAntesfamiperso.getId().getAntesfamipersocod() == null
				|| objHistoclinAntesfamiperso.getId().getAntesfamipersocod().equals("")
				|| objHistoclinAntesfamiperso.getNropersona() == null
				|| objHistoclinAntesfamiperso.getNropersona().equals("")
				) {
			throw new GeneralException(
					"error.HistoriasClinicas.datosBasicos.HistoclinAntesfamiperso.eliminar.pkNull");
		}
	}

	/* (non-Javadoc)
	 * @see com.proyecto.core.modelo.validacion.IValidacionServicio#incluir(java.lang.Object)
	 */
	public void incluir(Object o) throws GeneralException {
		// TODO Auto-generated method stub
		HistoclinAntesfamiperso objHistoclinAntesfamiperso = (HistoclinAntesfamiperso) o;
		if (objHistoclinAntesfamiperso == null || objHistoclinAntesfamiperso.getId().getCiaopr() == null
				|| objHistoclinAntesfamiperso.getId().getCiaopr().trim().equals("")) {
			throw new GeneralException(
					"error.HistoriasClinicas.datosBasicos.HistoclinAntesfamiperso.incluir.pkNull");
		} 
		this.validaCampos(objHistoclinAntesfamiperso,true);
	}

	/* (non-Javadoc)
	 * @see com.proyecto.core.modelo.validacion.IValidacionServicio#modificar(java.lang.Object)
	 */
	public void modificar(Object o) throws GeneralException {
		// TODO Auto-generated method stub
		HistoclinAntesfamiperso objHistoclinAntesfamiperso = (HistoclinAntesfamiperso) o;
		if (objHistoclinAntesfamiperso == null || objHistoclinAntesfamiperso.getId().getCiaopr() == null
				|| objHistoclinAntesfamiperso.getId().getCiaopr().trim().equals("")
				|| objHistoclinAntesfamiperso.getId().getHisclicod() == null
				|| objHistoclinAntesfamiperso.getId().getHisclicod().equals("")
				|| objHistoclinAntesfamiperso.getId().getAntesfamipersocod() == null
				|| objHistoclinAntesfamiperso.getId().getAntesfamipersocod().equals("")
				|| objHistoclinAntesfamiperso.getNropersona() == null
				|| objHistoclinAntesfamiperso.getNropersona().equals("")) {
			throw new GeneralException(
					"error.HistoriasClinicas.datosBasicos.HistoclinAntesfamiperso.modificar.pkNull");
		} 
		this.validaCampos(objHistoclinAntesfamiperso,false);
	}
	
	public void validaCampos(HistoclinAntesfamiperso objHistoclinAntesfamiperso, boolean validarExistenciaDato) throws GeneralException{
		//Validamos campos requeridos
		String campos = "";

		
		/*
		if(objHistoclinAntesfamiperso.getApgiFum() == null){		
			campos = "CpHistoclinAntesfamiperso.apgiFum";
		}
		
		if(campos != null ){			
			new GeneralException("error.HistoriasClinicas.datosBasicos.HistoclinAntesfamiperso.Edad");
		}
		*/

		String fchSegundaYYYYMMDD = ObtenerFecha.ObtenerFechaSistemaYYYYMMDD();

		if(objHistoclinAntesfamiperso.getApgiFum() == null){		
			//nada
		}else{
			String fchPrimeraYYYYMMDD = objHistoclinAntesfamiperso.getApgiFum();
			if(ObtenerFecha.fechaMayor(fchPrimeraYYYYMMDD,fchSegundaYYYYMMDD)){
				campos = campos + "CpHistoclinAntesfamiperso.apgiFum;";
			}
		}

		if(objHistoclinAntesfamiperso.getApgiCcv() == null){		
			//nada
		}else{
			String fchPrimeraYYYYMMDD = objHistoclinAntesfamiperso.getApgiCcv();
			if(ObtenerFecha.fechaMayor(fchPrimeraYYYYMMDD,fchSegundaYYYYMMDD)){
				campos = campos + "CpHistoclinAntesfamiperso.apgiCcv;";
			}
		}
		
		if(objHistoclinAntesfamiperso.getApgiFchultparto() == null){		
			//nada
		}else{
			String fchPrimeraYYYYMMDD = objHistoclinAntesfamiperso.getApgiFchultparto();
			if(ObtenerFecha.fechaMayor(fchPrimeraYYYYMMDD,fchSegundaYYYYMMDD)){
				campos = campos + "CpHistoclinAntesfamiperso.apgiFchultparto";
			}
		}

		
		if (!"".equals(campos)){			
			throw new GeneralException("error.HistoriasClinicas.datosBasicos.HistoclinAntesfamiperso.fchMayor",campos);
		}
		
		
		campos="";
		if(objHistoclinAntesfamiperso.getApgiFum() == null  ){		
			//nada
		}else{
			fchSegundaYYYYMMDD = objHistoclinAntesfamiperso.getApgiFum() ;
			if(objHistoclinAntesfamiperso.getApgiFcheco1() == null){
				
			}else{
				String fchPrimeraYYYYMMDD = objHistoclinAntesfamiperso.getApgiFcheco1();
				if(ObtenerFecha.fechaMenorIgual(fchPrimeraYYYYMMDD, fchSegundaYYYYMMDD) ){
					campos = campos + "CpHistoclinAntesfamiperso.apgiFcheco1;";
				}	
			}
		}

		if (!"".equals(campos)){			
			throw new GeneralException("error.HistoriasClinicas.datosBasicos.HistoclinAntesfamiperso.fchMayor.Fum",campos);
		}
		
		campos="";
		String fchSegundaYYYYMMDD2 = ObtenerFecha.ObtenerFechaSistemaYYYYMMDD();
		if(objHistoclinAntesfamiperso.getApgiFcheco1() == null){		
			//nada
		}else{
			String fchPrimeraYYYYMMDD = objHistoclinAntesfamiperso.getApgiFcheco1();
			fchSegundaYYYYMMDD = objHistoclinAntesfamiperso.getApgiFum();
			if(ObtenerFecha.fechaMayor(fchPrimeraYYYYMMDD, fchSegundaYYYYMMDD2)){
				campos = campos + "CpHistoclinAntesfamiperso.apgiFcheco1;";
			}
			
		}
		if(objHistoclinAntesfamiperso.getApgiFcheco2() == null){		
			//nada
		}else{
			String fchPrimeraYYYYMMDD = objHistoclinAntesfamiperso.getApgiFcheco2();
			if(ObtenerFecha.fechaMayor(fchPrimeraYYYYMMDD, fchSegundaYYYYMMDD2)){
				campos = campos + "CpHistoclinAntesfamiperso.apgiFcheco2;";
			}
			
		}

		if(objHistoclinAntesfamiperso.getApgiFcheco3() == null){		
			//nada
		}else{
			String fchPrimeraYYYYMMDD = objHistoclinAntesfamiperso.getApgiFcheco3();
			if(ObtenerFecha.fechaMayor(fchPrimeraYYYYMMDD, fchSegundaYYYYMMDD2)){
				campos = campos + "CpHistoclinAntesfamiperso.apgiFcheco3";
			}
			
		}

		if (!"".equals(campos)){			
			throw new GeneralException("error.HistoriasClinicas.datosBasicos.HistoclinAntesfamiperso.fchMayor",campos);
		}
		
			
		campos="";
		if(objHistoclinAntesfamiperso.getApgiEstoyembarazada()==null){
			
		}else{
			if( objHistoclinAntesfamiperso.getApgiEstoyembarazada() == 33	//33:SI		31:NO	32:NO SABE	61:NO APLICA	
					&& objHistoclinAntesfamiperso.getPersonas().getSexocod().equals("F")
					&& Integer.parseInt( objHistoclinAntesfamiperso.getHistoclinicas().getEdadhc()) >= ParametrosIniciales.EDADMINIMO_EMBARAZO
					&& Integer.parseInt( objHistoclinAntesfamiperso.getHistoclinicas().getEdadhc()) <= ParametrosIniciales.EDADMAXIMO_EMBARAZO){
				
				/*if(objHistoclinAntesfamiperso.getApgiGestas() == null){
					campos = campos + "CpHistoclinAntesfamiperso.apgiGestas;";
				}*/
				if(objHistoclinAntesfamiperso.getApgiPartos() == null){
					campos = campos + "CpHistoclinAntesfamiperso.apgiPartos;";
				}
				if(objHistoclinAntesfamiperso.getApgiAbortos()== null){
					campos = campos + "CpHistoclinAntesfamiperso.apgiAbortos;";
				}
				if(objHistoclinAntesfamiperso.getApgiCesarias()== null){
					campos = campos + "CpHistoclinAntesfamiperso.apgiCesarias;";
				}
				if(objHistoclinAntesfamiperso.getApgiHijosmalformados() == null){
					campos = campos + "CpHistoclinAntesfamiperso.apgiHijosmalformados;";
				}
				if(objHistoclinAntesfamiperso.getApgiHijosmen2500() == null){
					campos = campos + "CpHistoclinAntesfamiperso.apgiHijosmen2500;";
				}
				if(objHistoclinAntesfamiperso.getApgiHijosmay4000() == null){
					campos = campos + "CpHistoclinAntesfamiperso.apgiHijosmay4000;";
				}
				if(objHistoclinAntesfamiperso.getApgiPrematuros()== null){
					campos = campos + "CpHistoclinAntesfamiperso.apgiPrematuros";
				}

				if (!"".equals(campos)){			
					throw new GeneralException("error.HistoriasClinicas.datosBasicos.HistoclinAntesfamiperso.campos_obligatorios.mujerGestacion",campos);
				}
				
			}
		}


		campos="";
		if(objHistoclinAntesfamiperso.getApgiGestas() == null){		
			//nada
		}else{

			if( objHistoclinAntesfamiperso.getApgiGestas() >=0 
					&& objHistoclinAntesfamiperso.getApgiGestas() <=20
					){
			}else{
				campos = campos + "CpHistoclinAntesfamiperso.apgiGestas;";
			}
		}
		
		if(objHistoclinAntesfamiperso.getApgiPartos() == null){		
			//nada
		}else{
			

			if( objHistoclinAntesfamiperso.getApgiPartos() >=0 
					&& objHistoclinAntesfamiperso.getApgiPartos() <=20
					){
			}else{
				campos = campos + "CpHistoclinAntesfamiperso.apgiPartos;";
			}
		}
		
		if(objHistoclinAntesfamiperso.getApgiAbortos()== null){		
			//nada
		}else{

			if( objHistoclinAntesfamiperso.getApgiAbortos() >=0 
					&& objHistoclinAntesfamiperso.getApgiAbortos() <=20
					){
			}else{
				campos = campos + "CpHistoclinAntesfamiperso.apgiAbortos;";
			}
		}
		
		if(objHistoclinAntesfamiperso.getApgiCesarias()== null){		
			//nada
		}else{

			if( objHistoclinAntesfamiperso.getApgiCesarias() >=0 
					&& objHistoclinAntesfamiperso.getApgiCesarias() <=20
					){
			}else{
				campos = campos + "CpHistoclinAntesfamiperso.apgiCesarias;";
			}
		}
		
		
		if (!"".equals(campos)){			
			throw new GeneralException("error.HistoriasClinicas.datosBasicos.HistoclinAntesfamiperso.gestacion",campos);
		}else{
			if(objHistoclinAntesfamiperso.getPersonas().getSexocod().equals("F")
					&& Integer.parseInt( objHistoclinAntesfamiperso.getHistoclinicas().getEdadhc()) >= ParametrosIniciales.EDADMINIMO_EMBARAZO
					&& Integer.parseInt( objHistoclinAntesfamiperso.getHistoclinicas().getEdadhc()) <= ParametrosIniciales.EDADMAXIMO_EMBARAZO){
				Integer apgiGestas =0;
				//33:SI		31:NO	32:NO SABE	61:NO APLICA
				if(objHistoclinAntesfamiperso.getHistoclinicas().getEstagestacion() == 33){
					apgiGestas = objHistoclinAntesfamiperso.getApgiPartos() + objHistoclinAntesfamiperso.getApgiAbortos() + objHistoclinAntesfamiperso.getApgiCesarias();
					apgiGestas = apgiGestas +1;
				}
				

				objHistoclinAntesfamiperso.setApgiGestas(apgiGestas);
			}
		}
		
		if(objHistoclinAntesfamiperso.getPersonas().getSexocod().equals("F")
					&& Integer.parseInt( objHistoclinAntesfamiperso.getHistoclinicas().getEdadhc()) >= ParametrosIniciales.EDADMINIMO_EMBARAZO
					&& Integer.parseInt( objHistoclinAntesfamiperso.getHistoclinicas().getEdadhc()) <= ParametrosIniciales.EDADMAXIMO_EMBARAZO
					&& objHistoclinAntesfamiperso.getHistoclinicas().getEstagestacion() == 33){
			
			campos = "";

			if(objHistoclinAntesfamiperso.getApgiPrematuros()== null){		
				//nada
			}else{

				if( objHistoclinAntesfamiperso.getApgiPrematuros() >=0 
						&& objHistoclinAntesfamiperso.getApgiPrematuros() <=20
						){
				}else{
					campos = campos + "CpHistoclinAntesfamiperso.apgiPrematuros;";
				}
			}
			
			if(objHistoclinAntesfamiperso.getApgiHijosmen2500()== null){		
				//nada
			}else{

				if( objHistoclinAntesfamiperso.getApgiHijosmen2500() >=0
						&& objHistoclinAntesfamiperso.getApgiHijosmen2500() <=20
						){
				}else{
					campos = campos + "CpHistoclinAntesfamiperso.apgiHijosmen2500;";
				}
			}
			
			if(objHistoclinAntesfamiperso.getApgiHijosmay4000()== null){		
				//nada
			}else{

				if( objHistoclinAntesfamiperso.getApgiHijosmay4000() >=0
						&& objHistoclinAntesfamiperso.getApgiHijosmay4000() <=20
						){
				}else{
					campos = campos + "CpHistoclinAntesfamiperso.apgiHijosmay4000;";
				}
			}


			if(objHistoclinAntesfamiperso.getApgiHijosmalformados()== null){		
				//nada
			}else{

				if( objHistoclinAntesfamiperso.getApgiHijosmalformados() >=0
						&& objHistoclinAntesfamiperso.getApgiHijosmalformados() <=20
						){
				}else{
					campos = campos + "CpHistoclinAntesfamiperso.apgiHijosmalformados;";
				}
			}
			if(objHistoclinAntesfamiperso.getApgiEdadgesta() == null){		
				//nada
			}else{

				if( objHistoclinAntesfamiperso.getApgiEdadgesta() >=0.0 
						&& objHistoclinAntesfamiperso.getApgiEdadgesta() <=44.0
						){
				}else{
					campos = campos + "CpHistoclinAntesfamiperso.apgiEdadgesta;";
				}
			}
			
			if(objHistoclinAntesfamiperso.getApgiEdadgestaxeco() == null){		
				//nada
			}else{

				if( objHistoclinAntesfamiperso.getApgiEdadgestaxeco() >=0.0 
						&& objHistoclinAntesfamiperso.getApgiEdadgestaxeco() <=44.0
						){
				}else{
					campos = campos + "CpHistoclinAntesfamiperso.apgiEdadgestaxeco;";
				}
			}

			if(objHistoclinAntesfamiperso.getApgiSemecorep1() == null){		
				//nada
			}else{
				
				if( objHistoclinAntesfamiperso.getApgiSemecorep1() >=0.0 
						&& objHistoclinAntesfamiperso.getApgiSemecorep1() <=44.0
						){
				}else{
					campos = campos + "CpHistoclinAntesfamiperso.apgiSemecorep1;";
				}
			}

			if(objHistoclinAntesfamiperso.getApgiSemecorep2() == null){		
				//nada
			}else{
				
				if( objHistoclinAntesfamiperso.getApgiSemecorep2() >=0.0 
						&& objHistoclinAntesfamiperso.getApgiSemecorep2() <=44.0
						){
				}else{
					campos = campos + "CpHistoclinAntesfamiperso.apgiSemecorep2;";
				}
			}


			if(objHistoclinAntesfamiperso.getApgiSemecorep3() == null){		
				//nada
			}else{
				
				if( objHistoclinAntesfamiperso.getApgiSemecorep3() >=0.0 
						&& objHistoclinAntesfamiperso.getApgiSemecorep3() <=44.0
						){
				}else{
					campos = campos + "CpHistoclinAntesfamiperso.apgiSemecorep3";
				}
			}
			
			if (!"".equals(campos)){			
				throw new GeneralException("error.HistoriasClinicas.datosBasicos.HistoclinAntesfamiperso.gestacion",campos);
			}

			
		}
		
		if(objHistoclinAntesfamiperso.getApgiMtdsanticoncod() != null){			
			servicioTablaApoyoHistoclinMtdsanticonceptivos.consultar(
					new HistoclinMtdsanticonceptivosId(objHistoclinAntesfamiperso.getId().getCiaopr(),objHistoclinAntesfamiperso.getApgiMtdsanticoncod()) );
		}
		
		
	}

	public IServicioTransaccion getServicioTablaApoyoHistoclinMtdsanticonceptivos() {
		return servicioTablaApoyoHistoclinMtdsanticonceptivos;
	}

	public void setServicioTablaApoyoHistoclinMtdsanticonceptivos(
			IServicioTransaccion servicioTablaApoyoHistoclinMtdsanticonceptivos) {
		this.servicioTablaApoyoHistoclinMtdsanticonceptivos = servicioTablaApoyoHistoclinMtdsanticonceptivos;
	}

}
